class Person:
    # 构造方法：初始化姓名、年龄、性别
    def __init__(self, name, age, gender):
        self.name = name    
        self.age = age      
        self.gender = gender
    
    # 设置姓名的方法
    def set_name(self, name):
        self.name = name
    
    # 设置年龄的方法
    def set_age(self, age):
        self.age = age
    
    # 设置性别的方法
    def set_gender(self, gender):
        self.gender = gender
    
    # 显示个人信息的方法
    def show_info(self):
        return f"姓名：{self.name}，年龄：{self.age}，性别：{self.gender}"


# Student类（继承自Person类）
class Student(Person):
    # 构造方法：在父类基础上添加专业属性
    def __init__(self, name, age, gender, major):
        # 初始化继承的属性
        super().__init__(name, age, gender)
        self.major = major  # 新增专业属性
    
    # 设置专业的方法
    def set_major(self, major):
        self.major = major
    
    # 重写父类的show_info方法，添加专业信息
    def show_info(self):
        # 先调用父类的show_info获取基础信息，再补充专业信息
        base_info = super().show_info()
        return f"{base_info}，专业：{self.major}"


# 创建Student类的对象并展示信息
if __name__ == "__main__":
    # 创建学生对象
    student1 = Student("张三", 20, "男", "计算机科学与技术")
    
    # 展示初始信息
    print("学生初始信息：")
    print(student1.show_info())  # 输出：姓名：张三，年龄：20，性别：男，专业：计算机科学与技术
    
    # 修改部分属性
    student1.set_age(21)         # 修改年龄
    student1.set_major("软件工程") # 修改专业
    
    # 展示修改后的信息
    print("\n修改后的学生信息：")
    print(student1.show_info())  # 输出：姓名：张三，年龄：21，性别：男，专业：软件工程